```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dubbo 分布式服务框架实践指南</title>
    <link href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            color: #333;
            line-height: 1.6;
        }
        .hero-gradient {
            background: linear-gradient(135deg, #6e8efb 0%, #a777e3 100%);
        }
        .code-block {
            background-color: #282c34;
            border-radius: 8px;
            position: relative;
        }
        .code-lang {
            position: absolute;
            top: 8px;
            right: 12px;
            color: rgba(255,255,255,0.6);
            font-size: 0.8rem;
        }
        .card-hover {
            transition: all 0.3s ease;
        }
        .card-hover:hover {
            transform: translateY(-5px);
            box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1);
        }
        .section-divider {
            height: 1px;
            background: linear-gradient(90deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.1) 50%, rgba(0,0,0,0) 100%);
        }
    </style>
</head>
<body class="bg-gray-50">

<!-- Hero Section -->
<section class="hero-gradient text-white py-20">
    <div class="container mx-auto px-6 max-w-5xl">
        <div class="flex flex-col md:flex-row items-center">
            <div class="md:w-1/2 mb-10 md:mb-0">
                <h1 class="text-4xl md:text-5xl font-bold mb-4 leading-tight">Dubbo 分布式服务框架</h1>
                <p class="text-xl opacity-90 mb-8">高性能、轻量级的Java RPC框架</p>
                <div class="flex space-x-4">
                    <a href="#provider" class="bg-white text-indigo-600 px-6 py-3 rounded-lg font-medium hover:bg-opacity-90 transition">服务提供者</a>
                    <a href="#consumer" class="border-2 border-white text-white px-6 py-3 rounded-lg font-medium hover:bg-white hover:bg-opacity-10 transition">服务消费者</a>
                </div>
            </div>
            <div class="md:w-1/2">
                <img src="https://dubbo.apache.org/imgs/architecture.png" alt="Dubbo Architecture" class="rounded-lg shadow-xl">
            </div>
        </div>
    </div>
</section>

<!-- Project Structure Section -->
<section class="py-16 bg-white">
    <div class="container mx-auto px-6 max-w-5xl">
        <div class="text-center mb-12">
            <h2 class="text-3xl font-bold text-gray-800 mb-4">项目结构</h2>
            <div class="w-20 h-1 bg-indigo-500 mx-auto"></div>
        </div>
        
        <div class="bg-gray-100 rounded-xl p-6 mb-8">
            <img src="https://cdn.nlark.com/yuque/0/2023/png/21449790/1688376265694-e8a60b64-e88a-4b18-92dd-043824fb71c1.png" alt="项目结构图" class="rounded-lg shadow-md w-full">
        </div>
        
        <div class="grid md:grid-cols-2 gap-8">
            <div class="bg-white p-6 rounded-xl shadow-md border border-gray-100 card-hover">
                <div class="flex items-center mb-4">
                    <div class="bg-indigo-100 p-3 rounded-full mr-4">
                        <i class="fas fa-server text-indigo-600 text-xl"></i>
                    </div>
                    <h3 class="text-xl font-semibold text-gray-800">服务提供者</h3>
                </div>
                <p class="text-gray-600">负责暴露服务接口的具体实现，注册服务到注册中心，等待消费者调用。</p>
            </div>
            
            <div class="bg-white p-6 rounded-xl shadow-md border border-gray-100 card-hover">
                <div class="flex items-center mb-4">
                    <div class="bg-purple-100 p-3 rounded-full mr-4">
                        <i class="fas fa-users text-purple-600 text-xl"></i>
                    </div>
                    <h3 class="text-xl font-semibold text-gray-800">服务消费者</h3>
                </div>
                <p class="text-gray-600">从注册中心获取服务提供者地址，发起远程调用，获取服务结果。</p>
            </div>
        </div>
    </div>
</section>

<!-- Provider Section -->
<section id="provider" class="py-16 bg-gray-50">
    <div class="container mx-auto px-6 max-w-5xl">
        <div class="text-center mb-12">
            <h2 class="text-3xl font-bold text-gray-800 mb-4">服务提供者配置</h2>
            <p class="text-gray-600 max-w-2xl mx-auto">配置服务提供者以暴露接口实现供远程调用</p>
            <div class="w-20 h-1 bg-indigo-500 mx-auto"></div>
        </div>
        
        <div class="grid md:grid-cols-2 gap-8 mb-12">
            <div class="bg-white p-6 rounded-xl shadow-md border border-gray-100 card-hover">
                <h3 class="text-xl font-semibold text-gray-800 mb-4 flex items-center">
                    <i class="fas fa-cube text-indigo-500 mr-2"></i> 依赖配置
                </h3>
                <div class="code-block text-sm">
                    <div class="code-lang">XML</div>
                    <pre class="text-gray-200 p-4 overflow-x-auto"><code>&lt;dependency&gt;
    &lt;groupId&gt;com.alibaba.boot&lt;/groupId&gt;
    &lt;artifactId&gt;dubbo-spring-boot-starter&lt;/artifactId&gt;
    &lt;version&gt;0.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
                </div>
            </div>
            
            <div class="bg-white p-6 rounded-xl shadow-md border border-gray-100 card-hover">
                <h3 class="text-xl font-semibold text-gray-800 mb-4 flex items-center">
                    <i class="fas fa-cog text-indigo-500 mr-2"></i> YML配置
                </h3>
                <div class="code-block text-sm">
                    <div class="code-lang">YAML</div>
                    <pre class="text-gray-200 p-4 overflow-x-auto"><code>dubbo:
  application:
    name: dubbo-provider
  protocol:
    port: -1 # 自动寻找可用端口
  registry:
    address: zookeeper://192.168.147.135:2181
    check: false # 禁用注册中心启动检查</code></pre>
                </div>
            </div>
        </div>
        
        <div class="bg-white p-6 rounded-xl shadow-md border border-gray-100 mb-8 card-hover">
            <h3 class="text-xl font-semibold text-gray-800 mb-4 flex items-center">
                <i class="fas fa-code text-indigo-500 mr-2"></i> 接口定义与实现
            </h3>
            
            <div class="grid md:grid-cols-2 gap-6">
                <div>
                    <h4 class="font-medium text-gray-700 mb-2">接口定义</h4>
                    <div class="code-block text-sm mb-6">
                        <div class="code-lang">Java</div>
                        <pre class="text-gray-200 p-4 overflow-x-auto"><code>package com.ts.service;

import com.ts.entity.User;

public interface IUserService {
    public User getUserById(Integer id);
    public Integer addUser(User user);
}</code></pre>
                    </div>
                </div>
                
                <div>
                    <h4 class="font-medium text-gray-700 mb-2">接口实现</h4>
                    <div class="code-block text-sm">
                        <div class="code-lang">Java</div>
                        <pre class="text-gray-200 p-4 overflow-x-auto"><code>package com.ts.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.ts.entity.User;
import com.ts.service.IUserService;

@Service
public class UserServiceImpl implements IUserService {
    @Override
    public User getUserById(Integer id) {
        User user = new User();
        user.setId(id);
        user.setUsername("admin1");
        return user;
    }

    @Override
    public Integer addUser(User user) {
        System.out.println("user = [" + user + "]");
        return 10;
    }
}</code></pre>
                    </div>
                </div>
            </div>
        </div>
        
        <div class="bg-white p-6 rounded-xl shadow-md border border-gray-100 card-hover">
            <h3 class="text-xl font-semibold text-gray-800 mb-4 flex items-center">
                <i class="fas fa-rocket text-indigo-500 mr-2"></i> 启动类配置
            </h3>
            <div class="code-block text-sm mb-4">
                <div class="code-lang">Java</div>
                <pre class="text-gray-200 p-4 overflow-x-auto"><code>@SpringBootApplication
@DubboComponentScan(basePackages ="com.ts.service")
public class DubboDemo01Application {
    public static void main(String[] args) {
        SpringApplication.run(DubboDemo01Application.class, args);
    }
}</code></pre>
            </div>
            <div class="mt-6">
                <h4 class="font-medium text-gray-700 mb-2">启动效果</h4>
                <img src="https://cdn.nlark.com/yuque/0/2023/png/21449790/1688376501856-5662c6d5-8b41-4b0d-a3c8-d4ca4e04f641.png" alt="启动效果" class="rounded-lg shadow-md w-full border border-gray-200">
            </div>
        </div>
    </div>
</section>

<!-- Consumer Section -->
<section id="consumer" class="py-16 bg-white">
    <div class="container mx-auto px-6 max-w-5xl">
        <div class="text-center mb-12">
            <h2 class="text-3xl font-bold text-gray-800 mb-4">服务消费者配置</h2>
            <p class="text-gray-600 max-w-2xl mx-auto">配置服务消费者以调用远程服务</p>
            <div class="w-20 h-1 bg-indigo-500 mx-auto"></div>
        </div>
        
        <div class="grid md:grid-cols-2 gap-8 mb-8">
            <div class="bg-gray-50 p-6 rounded-xl shadow-md border border-gray-100 card-hover">
                <h3 class="text-xl font-semibold text-gray-800 mb-4 flex items-center">
                    <i class="fas fa-cube text-purple-500 mr-2"></i> 依赖配置
                </h3>
                <div class="code-block text-sm">
                    <div class="code-lang">XML</div>
                    <pre class="text-gray-200 p-4 overflow-x-auto"><code>&lt;dependency&gt;
    &lt;groupId&gt;com.alibaba.boot&lt;/groupId&gt;
    &lt;artifactId&gt;dubbo-spring-boot-starter&lt;/artifactId&gt;
    &lt;version&gt;0.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
                </div>
            </div>
            
            <div class="bg-gray-50 p-6 rounded-xl shadow-md border border-gray-100 card-hover">
                <h3 class="text-xl font-semibold text-gray-800 mb-4 flex items-center">
                    <i class="fas fa-cog text-purple-500 mr-2"></i> YML配置
                </h3>
                <div class="code-block text-sm">
                    <div class="code-lang">YAML</div>
                    <pre class="text-gray-200 p-4 overflow-x-auto"><code>dubbo:
  application:
    name: dubbo-consumer
  consumer:
    check: false # 禁用所有服务的启动检查
    timeout: 3000 # 远程调用超时时间
    actives: 3 # 超时策略
  registry:
    address: zookeeper://192.168.147.135:2181
    check: false</code></pre>
                </div>
            </div>
        </div>
        
        <div class="bg-gray-50 p-6 rounded-xl shadow-md border border-gray-100 card-hover">
            <h3 class="text-xl font-semibold text-gray-800 mb-4 flex items-center">
                <i class="fas fa-code text-purple-500 mr-2"></i> 远程调用实现
            </h3>
            <div class="code-block text-sm">
                <div class="code-lang">Java</div>
                <pre class="text-gray-200 p-4 overflow-x-auto"><code>@RestController
@RequestMapping("/user")
public class UserController {

    // @Reference(url = "192.168.193.1:20880") // 直连
    // @Reference(loadbalance = "roundrobin") // 负载均衡
    @Reference
    IUserService userService;

    @RequestMapping("/getUserById")
    public User getUserById(Integer id) {
        System.out.println(userService.getClass());
        System.out.println("id = [" + id + "]");
        return userService.getUserById(id);
    }
}</code></pre>
            </div>
        </div>
    </div>
</section>

<!-- Monitoring Section -->
<section class="py-16 bg-gray-50">
    <div class="container mx-auto px-6 max-w-5xl">
        <div class="text-center mb-12">
            <h2 class="text-3xl font-bold text-gray-800 mb-4">Dubbo 监控中心</h2>
            <p class="text-gray-600 max-w-2xl mx-auto">实时监控服务状态与调用情况</p>
            <div class="w-20 h-1 bg-indigo-500 mx-auto"></div>
        </div>
        
        <div class="grid md:grid-cols-2 gap-8 mb-8">
            <div class="bg-white p-4 rounded-xl shadow-md border border-gray-100 card-hover">
                <img src="https://cdn.nlark.com/yuque/0/2023/png/21449790/1688377137616-b19463af-41d9-425d-8189-655959a6dd4a.png" alt="Dubbo监控中心" class="rounded-lg w-full">
            </div>
            <div class="bg-white p-4 rounded-xl shadow-md border border-gray-100 card-hover">
                <img src="https://cdn.nlark.com/yuque/0/2023/png/21449790/1688377154251-eca58fd4-529e-4182-b254-b15da11656fe.png" alt="Dubbo服务详情" class="rounded-lg w-full">
            </div>
        </div>
    </div>
</section>

<!-- Flow Chart Section -->
<section class="py-16 bg-white">
    <div class="container mx-auto px-6 max-w-5xl">
        <div class="text-center mb-12">
            <h2 class="text-3xl font-bold text-gray-800 mb-4">Dubbo 流程图</h2>
            <p class="text-gray-600 max-w-2xl mx-auto">Dubbo服务调用流程与架构</p>
            <div class="w-20 h-1 bg-indigo-500 mx-auto"></div>
        </div>
        
        <div class="bg-gray-100 p-6 rounded-xl">
            <img src="https://cdn.nlark.com/yuque/0/2023/png/21449790/1688378325813-3fbe4a9a-0043-4cd8-b547-3f4071072e98.png" alt="Dubbo流程图" class="rounded-lg shadow-md w-full">
        </div>
        
        <div class="mt-12 grid md:grid-cols-3 gap-6">
            <div class="bg-indigo-50 p-6 rounded-xl border border-indigo-100">
                <div class="text-indigo-600 text-2xl mb-3">
                    <i class="fas fa-exchange-alt"></i>
                </div>
                <h3 class="text-xl font-semibold text-gray-800 mb-2">服务注册</h3>
                <p class="text-gray-600">服务提供者启动时向注册中心注册自己提供的服务</p>
            </div>
            
            <div class="bg-purple-50 p-6 rounded-xl border border-purple-100">
                <div class="text-purple-600 text-2xl mb-3">
                    <i class="fas fa-search"></i>
                </div>
                <h3 class="text-xl font-semibold text-gray-800 mb-2">服务发现</h3>
                <p class="text-gray-600">消费者启动时从注册中心获取所需服务提供者地址列表</p>
            </div>
            
            <div class="bg-green-50 p-6 rounded-xl border border-green-100">
                <div class="text-green-600 text-2xl mb-3">
                    <i class="fas fa-random"></i>
                </div>
                <h3 class="text-xl font-semibold text-gray-800 mb-2">负载均衡</h3>
                <p class="text-gray-600">消费者基于软负载均衡算法选择其中一个提供者进行调用</p>
            </div>
        </div>
    </div>
</section>

<!-- Footer -->
<footer class="bg-gray-900 text-white py-12">
    <div class="container mx-auto px-6 max-w-5xl">
        <div class="text-center">
            <h3 class="text-xl font-semibold mb-2">技术小馆</h3>
            <a href="http://www.yuque.com/jtostring" class="text-gray-400 hover:text-white transition">http://www.yuque.com/jtostring</a>
        </div>
        <div class="mt-8 pt-8 border-t border-gray-800 text-center text-gray-500 text-sm">
            <p>© 2023 技术小馆. All rights reserved.</p>
        </div>
    </div>
</footer>

<script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
<script>
    document.addEventListener('DOMContentLoaded', function() {
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: true,
                htmlLabels: true,
                curve: 'basis'
            }
        });
    });
</script>
</body>
</html>
```